/*!
 *  \file       DeviceEntropyGenerator.hpp
 *  \brief      Definizione della classe \c DeviceEntropyGenerator
 *  \author     Davide Scola <S2299453@studenti.unige.it>
 *  \author	Minetti Alberto <S3064777@studenti.unige.it>
 *  \version    1.0
 */

#ifndef _DEVICE_ENTROPY_GENERATOR_H
#define _DEVICE_ENTROPY_GENERATOR_H

/*!
 *  \brief      Definizione della classe \c DeviceEntropyGenerator
 *
 */
class DeviceEntropyGenerator : public TimeEntropyGenerator
{
  public :
    DeviceEntropyGenerator( std::string );
    DeviceEntropyGenerator( DeviceEntropyGenerator const& );
    
    ~DeviceEntropyGenerator( void );
    
    virtual DeviceEntropyGenerator& operator=( const DeviceEntropyGenerator& );
    virtual bool operator==( const DeviceEntropyGenerator& ) const;
    virtual bool operator!=( const DeviceEntropyGenerator& ) const;
    
    virtual long max( void );
    virtual long gather( void );
    
  protected :
    typedef int entropy_t;
    std::fstream *source_;
    
    virtual void resetSource( void );
    
};

#endif              /* _DEVICE_ENTROPY_GENERATOR_H */
